package com.compramascota.tests;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import com.thoughtworks.selenium.Selenium;
import com.thoughtworks.selenium.webdriven.WebDriverBackedSelenium;

import edu.uniquindio.prmaven.constants.ConfigurationConstants;
import edu.uniquindio.prmaven.constants.DataProvidersConstants;
import edu.uniquindio.prmaven.dataprovider.DataProviderArguments;
import edu.uniquindio.prmaven.general.TestCore;

/**
 * Clase de prueba para la compra de mascotas en la pagina de pestoreWeb
 * hereda atributos de la clase padre "TestCore"
 * @author DIANA
 *
 */

public class CompraMascota extends TestCore {

	@Test(dataProviderClass = edu.uniquindio.prmaven.dataprovider.DataProviderFactory.class, dataProvider = ConfigurationConstants.DP_FACTORY)
	@DataProviderArguments(ConfigurationConstants.ESCENARIO
			+ ConfigurationConstants.EQUALS + DataProvidersConstants.HOJA_1)
	/**
	 * Metodo de prueba para compra de mascotas en la pagina PestoreWeb
	 * recibe como parametros:
	 * @param pet, permite la busqueda de la mascota
	 * @param productId, permite la busqueda de la raza segun el tipo de mascota
	 * @param quantity, permite describir la cantidad a comprar
	 */
	
	public void testCompraMascota(String pet,String productId, String quantity) {

		// hola

		selenium.open("/petstoreWeb/");
		WebElement boton=driver.findElement(By.id("enter"));
	   	 boton.click();
	   	selenium.waitForPageToLoad("30000");
		WebElement botonMascota=driver.findElement(By.xpath("(//a[contains(text(),'"+pet+"')])[2]"));
		botonMascota.click();
		selenium.waitForPageToLoad("30000");
		
		WebElement linkProducto=driver.findElement(By.linkText("link="+productId));
		linkProducto.click();
		
		selenium.waitForPageToLoad("30000");
				
		//selenium.click("css=b > span");
		WebElement boton2=driver.findElement(By.cssSelector("b > span"));
		boton2.click();
		
		selenium.waitForPageToLoad("30000");
		
		//selenium.click("link=Add to Cart");
		WebElement botonCarrito=driver.findElement(By.linkText("Add to Cart"));
		botonCarrito.click();
		
		selenium.waitForPageToLoad("30000");
		
		//selenium.type("name={actionForm.cart.lineItems[0].quantity}", quantity);
		WebElement botonCantidad=driver.findElement
				(By.name("{actionForm.cart.lineItems[0].quantity}"));
		botonCantidad.sendKeys(quantity);
		
		//selenium.click("css=input[type=\"submit\"]");
		WebElement boton3=driver.findElement(By.cssSelector("input[type=\"submit\"]"));
		boton3.click();
		
		selenium.waitForPageToLoad("30000");
		
		//selenium.click("link=Proceed to Checkout");
		WebElement botonProcesar=driver.findElement(By.linkText("Proceed to Checkout"));
		botonProcesar.click();
		
		selenium.waitForPageToLoad("30000");
		
		//selenium.click("link=Continue");
		WebElement botonContinuar=driver.findElement(By.linkText("Continue"));
		botonContinuar.click();
		
		selenium.waitForPageToLoad("30000");
		
		//selenium.type("name={actionForm.order.creditCard}", "1234567");
		WebElement ingresarNum=driver.findElement(By.name("{actionForm.order.creditCard}"));
		ingresarNum.sendKeys("1234567");
		
		//selenium.type("name={actionForm.order.exprDate}", "12/07/2020");
		WebElement ingresarDate=driver.findElement(By.name("{actionForm.order.exprDate}"));
		ingresarDate.sendKeys("12/07/2020");
		
		//selenium.click("name=wlw-radio_button_group_key:{actionForm.order.billingAddress}");
		WebElement boton4=driver.findElement
				(By.name("wlw-radio_button_group_key:{actionForm.order.billingAddress}"));
		boton4.click();
		
		//selenium.click("name=wlw-radio_button_group_key:{actionForm.order.shippingAddress}");
		WebElement boton5=driver.findElement
				(By.name("wlw-radio_button_group_key:{actionForm.order.shippingAddress}"));
		boton5.click();
		
		//selenium.click("link=Continue");
		WebElement botonContinuar2=driver.findElement(By.linkText("Continue"));
		botonContinuar2.click();
		
		selenium.waitForPageToLoad("30000");
		
		//selenium.click("//a[2]/img");
		WebElement boton6=driver.findElement(By.partialLinkText("//a[2]/img"));
		boton6.click();
		
		selenium.waitForPageToLoad("30000");
	}

}